Routines (alphabetical) > Routines: L > LA_ELMHES

LA_ELMHES

Syntax | Return Value | Arguments | Keywords | Examples | Version History | See Also

The LA_ELMHES function reduces a real nonsymmetric or complex non-Hermitian array to upper Hessenberg form H. If the array is real then the decomposition is A = Q H QT, where Q is orthogonal. If the array is complex Hermitian then the decomposition is A = Q H QH, where Q is unitary. The superscript T represents the transpose while superscript H represents the Hermitian, or transpose complex conjugate.

LA_ELMHES is based on the following LAPACK routines:

LAPACK Routine Basis for LA_ELMHES

Output Type

Balance & Reduce

Norm

Optional Q

Float

sgebal, sgehrd

slange

sorghr

Double

dgebal, dgehrd

dlange

dorghr

Complex

cgebal, cgehrd

clange

cunghr

Double complex

zgebal, zgehrd

zlange

zunghr

For details see Anderson et al., LAPACK Users' Guide, 3rd ed., SIAM, 1999.

Syntax

Result = LA_ELMHES( Array [, Q] [, BALANCE=value] [, /DOUBLE] [, NORM_BALANCE=variable] [, PERMUTE_RESULT=variable] [, SCALE_RESULT=variable] )

Return Value

The result is an array of the same type as A containing the upper Hessenberg form. The Hessenberg array is stored in the upper triangle and the first subdiagonal. Elements below the subdiagonal should be ignored but are not automatically set to zero.

Arguments

Array

The n-by-n real or complex array to reduce to upper Hessenberg form.

Q

Set this optional argument to a named variable in which the array Q will be returned. The Q argument may then be input into LA_HQR to compute the Schur vectors.

Keywords

BALANCE

Set this keyword to one of the following values:

The default is BALANCE = 1, which performs both permutation and scaling balances. Balancing a nonsymmetric array is recommended to reduce the sensitivity of eigenvalues to rounding errors.

DOUBLE

Set this keyword to use double-precision for computations and to return a double-precision (real or complex) result. Set DOUBLE = 0 to use single-precision for computations and to return a single-precision (real or complex) result. The default is /DOUBLE if Array is double precision, otherwise the default is DOUBLE = 0.

NORM_BALANCE

Set this keyword to a named variable in which the one-norm of the balanced matrix will be returned. The one-norm is defined as the maximum value of the sum of absolute values of the columns.

PERMUTE_RESULT

Set this keyword to a named variable in which the result for permutation balancing will be returned as a two-element vector [ilo, ihi]. If permute balancing is not done then the values will be ilo = 1 and ihi = n.

SCALE_RESULT

Set this keyword to a named variable in which the result for permute and scale balancing will be returned as an n-element vector.

Examples

See LA_EIGENVEC for an example of using this procedure.

Version History

5.6

Introduced

See Also

ELMHES , LA_HQR